//package com.zmn.plat.dubbo.interfaces.category;
//
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.plat.common.dto.category.CategoryDIO;
//import com.zmn.plat.common.dto.category.CategoryDRO;
//import com.zmn.plat.dubbo.interfaces.product.tariff.TariffProductListRemoteService;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
//import javax.validation.Valid;
//import javax.validation.constraints.NotEmpty;
//import javax.validation.constraints.NotNull;
//import javax.validation.constraints.Positive;
//import javax.validation.constraints.Size;
//import java.util.List;
//
///**
// * 产品分类远程服务接口
// *
// * @author duanzuocai
// * @version v1.0
// * @since 2018/10/19 10:31
// */
//@Api(value = "产品分类远程服务接口", tags = {"产品分类"})
//public interface BaseCategoryListRemoteService {
//
//    /**
//     * 根据一二级产品分类ID查询产品分类
//     *
//     * @param categoryId
//     * @return
//     */
//    @ApiOperation(value = "根据一二级产品分类ID查询产品分类", response = ResponseDTO.class, tags = {"产品分类"})
//    ResponseDTO<CategoryDRO> getByCategoryId(@NotNull(message = "categoryId不能为空") @Positive(message = "categoryId必须为大于0的正整数") @ApiParam(value = "分类id", required = true) Integer categoryId);
//
//    /**
//     * 根据一二级产品分类IDs查询产品分类
//     *
//     * @param categIdList
//     * @return
//     */
//    @ApiOperation(value = "根据一二级产品分类ID列表查询产品分类", response = ResponseDTO.class, tags = {"产品分类"})
//    ResponseDTO<List<CategoryDRO>> getByCategoryIds(@NotEmpty(message = "categIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH)
//                                                    @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH, message = "categIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH)
//                                                    @ApiParam(value = "上级分类ID集合", required = true) List<Integer> categIdList);
//
//    /**
//     * 后台产品二级分类Id获取前台二级分类
//     *
//     * @param categId 后台产品二级分类Id
//     * @return
//     */
//    @ApiOperation(value = "后台产品二级分类Id获取前台二级分类", response = ResponseDTO.class, tags = {"前台二级分类"})
//    ResponseDTO<CategoryDRO> getShowCategoryByCategId(@NotNull(message = "categId不能为空") @Positive(message = "categId必须为大于0的正整数") @ApiParam(value = "分类id", required = true) Integer categId);
//
//    /**
//     * 根据id集合查询分类
//     *
//     * @param categIdList 分类Id
//     * @return
//     */
//    @ApiOperation(value = "后台产品二级分类Id获取前台二级分类", response = ResponseDTO.class, tags = {"前台二级分类"})
//    ResponseDTO<List<CategoryDRO>> listByCategIdListAndStatus(@NotEmpty(message = "categIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH,
//            message = "categIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "上级分类ID集合", required = true) List<Integer> categIdList,
//                                                              @Positive(message = "status必须为大于0的正整数") @ApiParam(value = "分类状态") Integer status);
//
//    /**
//     * 通过上级分类ID查询分类
//     *
//     * @param parentId
//     * @return
//     */
//    @ApiOperation(value = "通过上级分类ID查询分类", response = ResponseDTO.class, tags = {"上级分类"})
//    ResponseDTO<List<VtDTO>> listByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "分类父id", required = true) Integer parentId);
//
//    /**
//     * 通过上级分类ID查询分类
//     *
//     * @param parentIdList 上级分类ID集合
//     * @return
//     */
//    @ApiOperation(value = "通过上级分类ID查询分类", response = ResponseDTO.class, tags = {"上级分类"})
//    ResponseDTO<List<VtDTO>> listVtByParentIds(@NotEmpty(message = "parentIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH,
//            message = "parentIdList参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "上级分类ID集合", required = true) List<Integer> parentIdList);
//
//    /**
//     * 列表查询
//     *
//     * @param query 统一入参
//     * @return
//     * @see BaseCategoryListRemoteService#listErpCategoryVtByParentId(Integer)
//     */
//    @ApiOperation(value = "列表查询", response = ResponseDTO.class, tags = {"列表查询"})
//    ResponseDTO<List<CategoryDRO>> listByQuery(@NotNull(message = "query不能为空") @Valid @ApiParam(value = "入参", required = true) CategoryDIO query);
//
//    /**
//     * 列表查询-分页:计价器专用
//     *
//     * @param query
//     *            统一入参
//     * @return
//     * @see com.zmn.plat.dubbo.interfaces.product.tariff.TariffProductListRemoteService#listCategoryPageByCategoryDIO(com.zmn.plat.common.dto.product.tariff.category.TariffCategoryPageDIO)
//     */
//    // @Deprecated
//    // @ApiOperation(value = "列表查询-分页", response = ResponseDTO.class, tags = {"计价器专用"})
//    // ResponseDTO<CategoryPageDRO> listPageByQuery(@NotNull(message = "query不能为空") @Valid
//    // @ApiParam(value = "入参", required = true)CategoryPageDIO query);
//
//    /**
//     * 前台产品对应的所有后台产品的二级分类列表
//     *
//     * @param productFaultDIO
//     * @return
//     * @see TariffProductListRemoteService#listByTariffCategoryDIO(com.zmn.plat.common.dto.product.tariff.category.TariffCategoryDIO)
//     */
//    // @Deprecated
//    // @ApiOperation(value = "前台产品对应的所有后台产品的二级分类列表", response = ResponseDTO.class, tags = {"二级分类"})
//    // ResponseDTO<List<CategoryDRO>> listByShowProductId(@NotNull(message = "query不能为空") @Valid
//    // @ApiParam(value = "入参", required = true)ProductFaultDIO productFaultDIO);
//
//    /**
//     * 根据父Id取得所有子分类列表(EC分类)
//     *
//     * @param parentId
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表", response = ResponseDTO.class, tags = {"子类"})
//    ResponseDTO<List> listEcCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "分类id", required = true) Integer parentId);
//
//    /**
//     * 根据父Id取得所有子分类列表(EC分类)
//     *
//     * @param parentId
//     * @param limitPermit 是否过滤数据权限
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表(EC分类)", response = ResponseDTO.class, tags = {"子类", "数据权限"})
//    ResponseDTO<List> listEcCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "父分类id", required = true) Integer parentId,
//                                                 @NotNull(message = "limitPermit不能为空") @ApiParam(value = "是否过滤数据权限", required = true) Boolean limitPermit);
//
//    /**
//     * 根据父Id取得所有子分类列表(EC分类)
//     *
//     * @param parentId
//     * @param staffId  员工Id，为空或0则不过滤数据权限
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表(EC分类)", response = ResponseDTO.class, tags = {"子类", "员工Id"})
//    ResponseDTO<List> listEcCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "父分类id", required = true) Integer parentId,
//                                                 @ApiParam(value = "员工id") Integer staffId);
//
//    /**
//     * 根据父Id取得所有子分类列表(ERP分类)
//     *
//     * @param parentId
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表(ERP分类)", response = ResponseDTO.class, tags = {"父id"})
//    ResponseDTO<List> listErpCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "父分类id", required = true) Integer parentId);
//
//    /**
//     * 根据父Id取得所有子分类列表(ERP分类)
//     *
//     * @param parentId
//     * @param limitPermit 是否过滤数据权限
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表(ERP分类)", response = ResponseDTO.class, tags = {"父id", "数据权限"})
//    ResponseDTO<List> listErpCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "父分类id", required = true) Integer parentId,
//                                                  @NotNull(message = "limitPermit不能为空") @ApiParam(value = "是否过滤数据权限", required = true) Boolean limitPermit);
//
//    /**
//     * 根据父Id取得所有子分类列表(ERP分类)
//     *
//     * @param parentId
//     * @param staffId  员工Id，为空或0则不过滤数据权限
//     * @return
//     */
//    @ApiOperation(value = "根据父Id取得所有子分类列表", response = ResponseDTO.class, tags = {"父id", "员工Id"})
//    ResponseDTO<List> listErpCategoryVtByParentId(@NotNull(message = "parentId不能为空") @Positive(message = "parentId必须为大于0的正整数") @ApiParam(value = "父分类id", required = true) Integer parentId,
//                                                  @ApiParam(value = "员工id") Integer staffId);
//
//    /**
//     * 分类统计
//     *
//     * @param query 统一入参
//     * @return
//     */
//    @ApiOperation(value = "分类统计", response = ResponseDTO.class, tags = {"统计"})
//    ResponseDTO<Integer> countByQuery(@NotNull(message = "query不能为空") @Valid @ApiParam(value = "入参") CategoryDIO query);
//
//}
